package cn.tedu.knows.faq.service.impl;


import cn.tedu.knows.commons.model.Tag;
import cn.tedu.knows.faq.mapper.TagMapper;
import cn.tedu.knows.faq.service.ITagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author tedu.cn
 * @since 2021-07-23
 */
@Service
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements ITagService {

    //添加操作Redis的对象
    @Resource
    private RedisTemplate<String,List<Tag>> redisTemplate;

    @Autowired
    private TagMapper tagMapper;
    @Override
    public List<Tag> getTags() {
        //先从redis中获得key为tags的对象
        List<Tag> tags=redisTemplate.opsForValue().get("tags");
        //判断tags是否包含信息
        if(tags==null||tags.isEmpty()) {
            //如果tags为空,连接数据库查询所有标签
            tags=tagMapper.selectList(null);
            //将查询出的所有标签保存在Redis中,作为缓存
            redisTemplate.opsForValue().set("tags",tags);
            System.out.println("缓存已加载");
        }
        //千万别忘了返回!!!!!
        return tags;
    }
    @Override
    public Map<String, Tag> getTagMap() {
        Map<String,Tag> map=new HashMap<>();
        for(Tag t: getTags()){
            map.put(t.getName(),t);
        }
        //别忘了返回!!!
        return map;
    }
}
